]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
layoutManager: Subclass GObject.Object
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 21 Aug 2018 10:13:30 +0000 (07:13 -0300)
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Tue, 9 Oct 2018 01:42:26 +0000 (22:42 -0300)
LayoutManager is currently a pure JavaScript class that
relies on the rudimentary Signals.addSignalMethods() to
handle signals. This is an inefficient implementation of
one of the most central classes in GNOME Shell.

In addition to removing Shell.GenericContainer, then,
turn LayoutManager into a proper GObject.Object subclass.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/153

js/ui/layout.js

index c379e78635dcf6b66b41791841ca4e56a7501af4..6c7e934db96075f6a7a9b1b6dfa8ae895071be04 100644 (file)
@@ -177,8 +177,16 @@ const defaultParams = {
 
 var LayoutManager = new Lang.Class({
     Name: 'LayoutManager',
+    Extends: GObject.Object,
+    Signals: { 'hot-corners-changed': {},
+               'startup-complete': {},
+               'startup-prepared': {},
+               'monitors-changed': {},
+               'keyboard-visible-changed': { param_types: [GObject.TYPE_BOOLEAN] } },
 
     _init() {
+        this.parent();
+
         this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
         this.monitors = [];
         this.primaryMonitor = null;
@@ -1069,7 +1077,6 @@ var LayoutManager = new Lang.Class({
         this._queueUpdateRegions();
     },
 });
-Signals.addSignalMethods(LayoutManager.prototype);
 
 
 // HotCorner: